/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * MedicamentoPresentacion.java
 *
 * Created on 01/09/2010, 15:21:34
 */

package presentacion.medicamento;

import hibernate.objeto.NombreComercialMedicamento;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import logica.CapaLogica;
import logica.NombreComercialMedicamentoLogica;
import logica.validacion.CapaValidacion;
import presentacion.CapaPresentacion;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.Icono;
import presentacion.utilidad.maquetado.InformeError;
import presentacion.utilidad.MensajePresentacion;

/**
 *
 * @author Gonzalo
 */
public class MedicamentoPresentacion extends javax.swing.JDialog {

    /** Creates new form MedicamentoPresentacion */
    public MedicamentoPresentacion(java.awt.Frame parent,
            boolean modal, NombreComercialMedicamento unNombreComercialMedicamento) {
        super(parent, modal);
        initComponents();

        nombreComercialMedicamento = unNombreComercialMedicamento;
        cancelado = true;

        personalizarGUI();
        setSize(CapaPresentacion.getTamañoMaximoJDialog());
        setLocationRelativeTo(null);
        setearEventosQueCapturanTeclaEnterYEscape();
    }

    /**
     * Setea datos de la ventana.
     *
     */
    private void personalizarGUI() {
        seMofifico = false;

        if (CapaPresentacion.modoCarga) {
            modoCarga();
        } else if (CapaPresentacion.modoModificacion) {
            modoModificacion();
        } else if (CapaPresentacion.modoVisualizacion) {
            modoVisualizacion();
        }
    }

    /**
     * Setea la ventana en modo carga.
     *
     */
    private void modoCarga() {
        nombreComercialMedicamento = new NombreComercialMedicamento();
        this.setTitle("Agregar Medicamento");
            crearObjetos();
    }

    /**
     * Setea la ventana en modo visualización.
     *
     */
    private void modoVisualizacion() {
        exhibirDatosEnPantalla();
        setearEstadoCampos(false);
        botonCancelar.requestFocus();
        CapaPresentacion.personalizarBotonesEnVisualizacion(
                textoDescriptivoVentana, botonAceptar, botonCancelar);
    }

    /**
     * Setea la ventana en modo modificación.
     *
     */
    private void modoModificacion() {
        this.setTitle("Modificar Medicamento");
            exhibirDatosEnPantalla();
    }
    
    /**
     * Pone en false la propiedad enabled de todos los campos de ingreso.
     *
     * @param estado El estado a setear
     */
    private void setearEstadoCampos(boolean estado) {
        nombreComercial.setEnabled(estado);
        principioActivo.setEnabled(estado);
        grupoTerapeutico.setEnabled(estado);
        laboratorio.setEnabled(estado);
        
        composicionNombreComercial.setEnabled(estado);
        presentacionNombreComercial.setEnabled(estado);
        contraindicacionesNombreComercial.setEnabled(estado);
        dosificacionNombreComercial.setEnabled(estado);
        indicacionesNombreComercial.setEnabled(estado);
        accionTerapeuticaNombreComercial.setEnabled(estado);
        
        contraindicacionesPrincipioActivo.setEnabled(estado);
        precaucionesPrincipioActivo.setEnabled(estado);
        embarazoYLactanciaPrincipioActivo.setEnabled(estado);
        interaccionesPrincipioActivo.setEnabled(estado);
        
        caracteristicaNombreComercial.setEnabled(estado);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        botonCancelar = new javax.swing.JButton();
        botonAceptar = new javax.swing.JButton();
        panelSeleccionCaracteristicas = new javax.swing.JPanel();
        panelCaracteristicaScrollPane = new javax.swing.JScrollPane();
        caracteristicaNombreComercial = new javax.swing.JEditorPane();
        panelCaracteristicasNombreComercial = new javax.swing.JPanel();
        composicionNombreComercial = new javax.swing.JCheckBox();
        presentacionNombreComercial = new javax.swing.JCheckBox();
        contraindicacionesNombreComercial = new javax.swing.JCheckBox();
        dosificacionNombreComercial = new javax.swing.JCheckBox();
        indicacionesNombreComercial = new javax.swing.JCheckBox();
        accionTerapeuticaNombreComercial = new javax.swing.JCheckBox();
        panelCaracteristicasPrincipioActivo = new javax.swing.JPanel();
        contraindicacionesPrincipioActivo = new javax.swing.JCheckBox();
        precaucionesPrincipioActivo = new javax.swing.JCheckBox();
        embarazoYLactanciaPrincipioActivo = new javax.swing.JCheckBox();
        interaccionesPrincipioActivo = new javax.swing.JCheckBox();
        textoDescriptivoVentana1 = new javax.swing.JLabel();
        textoDescriptivoVentana = new javax.swing.JLabel();
        textoNombreComercial = new javax.swing.JLabel();
        textoGrupoTerapeutico = new javax.swing.JLabel();
        grupoTerapeutico = new javax.swing.JTextField();
        nombreComercial = new javax.swing.JTextField();
        textoPrincipioActivo = new javax.swing.JLabel();
        principioActivo = new javax.swing.JTextField();
        laboratorio = new javax.swing.JTextField();
        textoLaboratorio = new javax.swing.JLabel();
        jSeparator1 = new javax.swing.JSeparator();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Agregar Medicamento");
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
        });

        botonCancelar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonCancelar.setForeground(Fuente.COLOR_NORMAL);
        botonCancelar.setIcon(Icono.ICONO_16_CANCELAR);
        botonCancelar.setText("Cancelar");
        botonCancelar.setToolTipText("Cancela la operación");
        botonCancelar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        botonAceptar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonAceptar.setForeground(Fuente.COLOR_NORMAL);
        botonAceptar.setIcon(Icono.ICONO_16_ACEPTAR);
        botonAceptar.setText("Aceptar");
        botonAceptar.setToolTipText("Agrega el medicamento");
        botonAceptar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        panelSeleccionCaracteristicas.setForeground(Fuente.COLOR_NORMAL);
        panelSeleccionCaracteristicas.setMinimumSize(new java.awt.Dimension(593, 20));

        panelCaracteristicaScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        panelCaracteristicaScrollPane.setMinimumSize(new java.awt.Dimension(0, 0));
        panelCaracteristicaScrollPane.setPreferredSize(new java.awt.Dimension(1004, 461));

        caracteristicaNombreComercial.setFont(Fuente.FUENTE_TEXTFIELD);
        caracteristicaNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        caracteristicaNombreComercial.setToolTipText("Complete la información de la caraterísticas seleccionadas");
        caracteristicaNombreComercial.setMinimumSize(new java.awt.Dimension(0, 0));
        caracteristicaNombreComercial.setPreferredSize(new java.awt.Dimension(108, 236));
        caracteristicaNombreComercial.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caracteristicaNombreComercialKeyReleased(evt);
            }
        });
        panelCaracteristicaScrollPane.setViewportView(caracteristicaNombreComercial);

        panelCaracteristicasNombreComercial.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Características del nombre comercial", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, Fuente.FUENTE_PANEL_BORDE));
        panelCaracteristicasNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        panelCaracteristicasNombreComercial.setMinimumSize(new java.awt.Dimension(311, 83));
        panelCaracteristicasNombreComercial.setPreferredSize(new java.awt.Dimension(502, 88));

        composicionNombreComercial.setFont(Fuente.FUENTE_CHECKBOX);
        composicionNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        composicionNombreComercial.setText("Composición");
        composicionNombreComercial.setPreferredSize(new java.awt.Dimension(130, 23));
        composicionNombreComercial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                composicionNombreComercialActionPerformed(evt);
            }
        });

        presentacionNombreComercial.setFont(Fuente.FUENTE_CHECKBOX);
        presentacionNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        presentacionNombreComercial.setText("Presentación");
        presentacionNombreComercial.setPreferredSize(new java.awt.Dimension(130, 23));
        presentacionNombreComercial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                presentacionNombreComercialActionPerformed(evt);
            }
        });

        contraindicacionesNombreComercial.setFont(Fuente.FUENTE_CHECKBOX);
        contraindicacionesNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        contraindicacionesNombreComercial.setText("Contraindicaciones");
        contraindicacionesNombreComercial.setPreferredSize(new java.awt.Dimension(130, 23));
        contraindicacionesNombreComercial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                contraindicacionesNombreComercialActionPerformed(evt);
            }
        });

        dosificacionNombreComercial.setFont(Fuente.FUENTE_CHECKBOX);
        dosificacionNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        dosificacionNombreComercial.setText("Dosificación");
        dosificacionNombreComercial.setPreferredSize(new java.awt.Dimension(130, 23));
        dosificacionNombreComercial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                dosificacionNombreComercialActionPerformed(evt);
            }
        });

        indicacionesNombreComercial.setFont(Fuente.FUENTE_CHECKBOX);
        indicacionesNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        indicacionesNombreComercial.setText("Indicaciones");
        indicacionesNombreComercial.setPreferredSize(new java.awt.Dimension(130, 23));
        indicacionesNombreComercial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                indicacionesNombreComercialActionPerformed(evt);
            }
        });

        accionTerapeuticaNombreComercial.setFont(Fuente.FUENTE_CHECKBOX);
        accionTerapeuticaNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        accionTerapeuticaNombreComercial.setText("Acción terapéutica");
        accionTerapeuticaNombreComercial.setPreferredSize(new java.awt.Dimension(130, 23));
        accionTerapeuticaNombreComercial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                accionTerapeuticaNombreComercialActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelCaracteristicasNombreComercialLayout = new javax.swing.GroupLayout(panelCaracteristicasNombreComercial);
        panelCaracteristicasNombreComercial.setLayout(panelCaracteristicasNombreComercialLayout);
        panelCaracteristicasNombreComercialLayout.setHorizontalGroup(
            panelCaracteristicasNombreComercialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelCaracteristicasNombreComercialLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelCaracteristicasNombreComercialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelCaracteristicasNombreComercialLayout.createSequentialGroup()
                        .addComponent(composicionNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(presentacionNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(contraindicacionesNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(panelCaracteristicasNombreComercialLayout.createSequentialGroup()
                        .addComponent(dosificacionNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(indicacionesNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(accionTerapeuticaNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(88, Short.MAX_VALUE))
        );
        panelCaracteristicasNombreComercialLayout.setVerticalGroup(
            panelCaracteristicasNombreComercialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelCaracteristicasNombreComercialLayout.createSequentialGroup()
                .addGroup(panelCaracteristicasNombreComercialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(presentacionNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(composicionNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(contraindicacionesNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelCaracteristicasNombreComercialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(indicacionesNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(dosificacionNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(accionTerapeuticaNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        panelCaracteristicasPrincipioActivo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Características del principio activo", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, Fuente.FUENTE_PANEL_BORDE));
        panelCaracteristicasPrincipioActivo.setForeground(Fuente.COLOR_NORMAL);
        panelCaracteristicasPrincipioActivo.setMinimumSize(new java.awt.Dimension(0, 0));
        panelCaracteristicasPrincipioActivo.setPreferredSize(new java.awt.Dimension(484, 88));

        contraindicacionesPrincipioActivo.setFont(Fuente.FUENTE_CHECKBOX);
        contraindicacionesPrincipioActivo.setForeground(Fuente.COLOR_NORMAL);
        contraindicacionesPrincipioActivo.setText("Contraindicaciones");
        contraindicacionesPrincipioActivo.setPreferredSize(new java.awt.Dimension(130, 23));
        contraindicacionesPrincipioActivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                contraindicacionesPrincipioActivoActionPerformed(evt);
            }
        });

        precaucionesPrincipioActivo.setFont(Fuente.FUENTE_CHECKBOX);
        precaucionesPrincipioActivo.setForeground(Fuente.COLOR_NORMAL);
        precaucionesPrincipioActivo.setText("Precauciones");
        precaucionesPrincipioActivo.setPreferredSize(new java.awt.Dimension(130, 23));
        precaucionesPrincipioActivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                precaucionesPrincipioActivoActionPerformed(evt);
            }
        });

        embarazoYLactanciaPrincipioActivo.setFont(Fuente.FUENTE_CHECKBOX);
        embarazoYLactanciaPrincipioActivo.setForeground(Fuente.COLOR_NORMAL);
        embarazoYLactanciaPrincipioActivo.setText("Embarazo y lactancia");
        embarazoYLactanciaPrincipioActivo.setPreferredSize(new java.awt.Dimension(130, 23));
        embarazoYLactanciaPrincipioActivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                embarazoYLactanciaPrincipioActivoActionPerformed(evt);
            }
        });

        interaccionesPrincipioActivo.setFont(Fuente.FUENTE_CHECKBOX);
        interaccionesPrincipioActivo.setForeground(Fuente.COLOR_NORMAL);
        interaccionesPrincipioActivo.setText("Interacciones");
        interaccionesPrincipioActivo.setPreferredSize(new java.awt.Dimension(130, 23));
        interaccionesPrincipioActivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                interaccionesPrincipioActivoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelCaracteristicasPrincipioActivoLayout = new javax.swing.GroupLayout(panelCaracteristicasPrincipioActivo);
        panelCaracteristicasPrincipioActivo.setLayout(panelCaracteristicasPrincipioActivoLayout);
        panelCaracteristicasPrincipioActivoLayout.setHorizontalGroup(
            panelCaracteristicasPrincipioActivoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelCaracteristicasPrincipioActivoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelCaracteristicasPrincipioActivoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(embarazoYLactanciaPrincipioActivo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(contraindicacionesPrincipioActivo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelCaracteristicasPrincipioActivoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(precaucionesPrincipioActivo, 0, 0, Short.MAX_VALUE)
                    .addComponent(interaccionesPrincipioActivo, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE))
                .addGap(289, 289, 289))
        );
        panelCaracteristicasPrincipioActivoLayout.setVerticalGroup(
            panelCaracteristicasPrincipioActivoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelCaracteristicasPrincipioActivoLayout.createSequentialGroup()
                .addGroup(panelCaracteristicasPrincipioActivoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(contraindicacionesPrincipioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(precaucionesPrincipioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelCaracteristicasPrincipioActivoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(embarazoYLactanciaPrincipioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(interaccionesPrincipioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        textoDescriptivoVentana1.setFont(Fuente.FUENTE_TITULO_3);
        textoDescriptivoVentana1.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVentana1.setText("Seleccione la caraterística y complete la información asociada");
        textoDescriptivoVentana1.setPreferredSize(new java.awt.Dimension(730, 20));

        javax.swing.GroupLayout panelSeleccionCaracteristicasLayout = new javax.swing.GroupLayout(panelSeleccionCaracteristicas);
        panelSeleccionCaracteristicas.setLayout(panelSeleccionCaracteristicasLayout);
        panelSeleccionCaracteristicasLayout.setHorizontalGroup(
            panelSeleccionCaracteristicasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(panelCaracteristicaScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(panelSeleccionCaracteristicasLayout.createSequentialGroup()
                .addGroup(panelSeleccionCaracteristicasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(textoDescriptivoVentana1, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
                    .addComponent(panelCaracteristicasNombreComercial, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelCaracteristicasPrincipioActivo, javax.swing.GroupLayout.DEFAULT_SIZE, 496, Short.MAX_VALUE))
        );
        panelSeleccionCaracteristicasLayout.setVerticalGroup(
            panelSeleccionCaracteristicasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelSeleccionCaracteristicasLayout.createSequentialGroup()
                .addComponent(textoDescriptivoVentana1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(panelSeleccionCaracteristicasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panelCaracteristicasNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(panelCaracteristicasPrincipioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelCaracteristicaScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 454, Short.MAX_VALUE))
        );

        textoDescriptivoVentana.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoVentana.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVentana.setText("Ingrese los datos del medicamento");
        textoDescriptivoVentana.setPreferredSize(new java.awt.Dimension(766, 20));

        textoNombreComercial.setForeground(Fuente.COLOR_NORMAL);
        textoNombreComercial.setText("Nombre comercial");
        textoNombreComercial.setPreferredSize(new java.awt.Dimension(95, 20));

        textoGrupoTerapeutico.setForeground(Fuente.COLOR_NORMAL);
        textoGrupoTerapeutico.setText("Grupo terapéutico");
        textoGrupoTerapeutico.setPreferredSize(new java.awt.Dimension(95, 20));

        grupoTerapeutico.setFont(Fuente.FUENTE_TEXTFIELD);
        grupoTerapeutico.setForeground(Fuente.COLOR_NORMAL);
        grupoTerapeutico.setPreferredSize(new java.awt.Dimension(377, 20));

        nombreComercial.setFont(Fuente.FUENTE_TEXTFIELD);
        nombreComercial.setForeground(Fuente.COLOR_NORMAL);
        nombreComercial.setPreferredSize(new java.awt.Dimension(377, 20));

        textoPrincipioActivo.setForeground(Fuente.COLOR_NORMAL);
        textoPrincipioActivo.setText("Principio activo");
        textoPrincipioActivo.setPreferredSize(new java.awt.Dimension(95, 20));

        principioActivo.setFont(Fuente.FUENTE_TEXTFIELD);
        principioActivo.setForeground(Fuente.COLOR_NORMAL);
        principioActivo.setPreferredSize(new java.awt.Dimension(377, 20));

        laboratorio.setFont(Fuente.FUENTE_TEXTFIELD);
        laboratorio.setForeground(Fuente.COLOR_NORMAL);
        laboratorio.setPreferredSize(new java.awt.Dimension(377, 20));

        textoLaboratorio.setForeground(Fuente.COLOR_NORMAL);
        textoLaboratorio.setText("Laboratorio");
        textoLaboratorio.setPreferredSize(new java.awt.Dimension(95, 20));

        jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);
        jSeparator1.setPreferredSize(new java.awt.Dimension(19, 5));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(textoGrupoTerapeutico, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(textoNombreComercial, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(grupoTerapeutico, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
                            .addComponent(nombreComercial, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE))
                        .addGap(31, 31, 31)
                        .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(textoLaboratorio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(textoPrincipioActivo, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(principioActivo, javax.swing.GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE)
                            .addComponent(laboratorio, javax.swing.GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE)))
                    .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, 222, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(panelSeleccionCaracteristicas, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(nombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(textoNombreComercial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(textoGrupoTerapeutico, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(grupoTerapeutico, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
                        .addGap(11, 11, 11))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(principioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(textoPrincipioActivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(textoLaboratorio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(laboratorio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelSeleccionCaracteristicas, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(11, 11, 11)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void composicionNombreComercialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_composicionNombreComercialActionPerformed
        manejoDeCombobox("composicionNombreComercial");
        activarEscrituraCaracteristica(composicionNombreComercial.isSelected());
    }//GEN-LAST:event_composicionNombreComercialActionPerformed

    private void presentacionNombreComercialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_presentacionNombreComercialActionPerformed
        manejoDeCombobox("presentacionNombreComercial");
        activarEscrituraCaracteristica(presentacionNombreComercial.isSelected());
    }//GEN-LAST:event_presentacionNombreComercialActionPerformed

    private void contraindicacionesNombreComercialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_contraindicacionesNombreComercialActionPerformed
         manejoDeCombobox("contraindicacionesNombreComercial");
         activarEscrituraCaracteristica(contraindicacionesNombreComercial.isSelected());
    }//GEN-LAST:event_contraindicacionesNombreComercialActionPerformed

    private void dosificacionNombreComercialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dosificacionNombreComercialActionPerformed
        manejoDeCombobox("dosificacionNombreComercial");
        activarEscrituraCaracteristica(dosificacionNombreComercial.isSelected());
    }//GEN-LAST:event_dosificacionNombreComercialActionPerformed

    private void indicacionesNombreComercialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_indicacionesNombreComercialActionPerformed
        manejoDeCombobox("indicacionesNombreComercial");
        activarEscrituraCaracteristica(indicacionesNombreComercial.isSelected());
    }//GEN-LAST:event_indicacionesNombreComercialActionPerformed

    private void contraindicacionesPrincipioActivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_contraindicacionesPrincipioActivoActionPerformed
        manejoDeCombobox("contraindicacionesPrincipioActivo");
        activarEscrituraCaracteristica(contraindicacionesPrincipioActivo.isSelected());
    }//GEN-LAST:event_contraindicacionesPrincipioActivoActionPerformed

    private void precaucionesPrincipioActivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_precaucionesPrincipioActivoActionPerformed
        manejoDeCombobox("precaucionesPrincipioActivo");
        activarEscrituraCaracteristica(precaucionesPrincipioActivo.isSelected());
    }//GEN-LAST:event_precaucionesPrincipioActivoActionPerformed

    private void embarazoYLactanciaPrincipioActivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_embarazoYLactanciaPrincipioActivoActionPerformed
        manejoDeCombobox("embarazoYLactanciaPrincipioActivo");
        activarEscrituraCaracteristica(embarazoYLactanciaPrincipioActivo.isSelected());
    }//GEN-LAST:event_embarazoYLactanciaPrincipioActivoActionPerformed

    private void interaccionesPrincipioActivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_interaccionesPrincipioActivoActionPerformed
        manejoDeCombobox("interaccionesPrincipioActivo");
        activarEscrituraCaracteristica(interaccionesPrincipioActivo.isSelected());
    }//GEN-LAST:event_interaccionesPrincipioActivoActionPerformed

    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        if (nombreComercialMedicamento != null ) {
            seMofifico = true;
        }
        agregarOModificarMedicamento();
    }//GEN-LAST:event_botonAceptarActionPerformed

    /**
     * Agrega/modifica un medicamento a la base de datos.
     *
     * @return true si lo agregó/modificó correctamente, false en caso contrario
     */
    private void agregarOModificarMedicamento() {
        //Confirmar modificación
        if (CapaPresentacion.confirmarModificacion("nombre comercial", "el")) {
            //Si el nombre comercial no existe en la bd
            if (validarCamposMedicamento()) {
                //Valida los campos
                if (esNombreComercialUnico()) {
                    //Carga toda la información de la pantalla
                    recopilarDatos();
                    //Agrega/modifica el medicamento
                    if ((NombreComercialMedicamentoLogica.agregarOModificarMedicamento(
                            datosMedicamento,
                            nombreComercialMedicamento))) {
                        cancelado = false;
                        this.dispose();
                    } 
                } else {
                    MensajePresentacion.errorDuplicidadObjeto("El medicamento");
                }
            } else {
                MensajePresentacion.errorDatosInvalidos();
            }
        } 
    }

    private void accionTerapeuticaNombreComercialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_accionTerapeuticaNombreComercialActionPerformed
        manejoDeCombobox("accionTerapeuticaNombreComercial");
    }//GEN-LAST:event_accionTerapeuticaNombreComercialActionPerformed

    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        setNombreComercialMedicamento(null);
        this.dispose();
    }//GEN-LAST:event_botonCancelarActionPerformed

    private void caracteristicaNombreComercialKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_caracteristicaNombreComercialKeyReleased
        guardarCaracteristica();
    }//GEN-LAST:event_caracteristicaNombreComercialKeyReleased

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        setNombreComercialMedicamento(null);
    }//GEN-LAST:event_formWindowClosed

    /**
     * Gestiona el comportamiento de los combobox.
     * 
     * @param combo El comboBox seteado
     */
    private void manejoDeCombobox(String combo) {
        comportamientoComposicionNombreComercial(combo);
        comportamientoPresentacionNombreComercial(combo);
        comportamientoContraindicacionesNombre(combo);
        comportamientoDosificacionNombreComercial(combo);
        comportamientoIndicacionesNombreComercial(combo);
        comportamientoAccionTerapeuticaNombreComercial(combo);
        comportamientoContraindicacionesPrincipioActivo(combo);
        comportamientoPrecaucionesPrincipioActivo(combo);
        comportamientoEmbarazoYLactanciaPrincipioActivo(combo);
        comportamientoInteraccionesPrincipioActivo(combo);
    }

    /**
     * Guarda la instantánea de la caracteristica que se está cargando.
     * 
     */
    private void guardarCaracteristica() {
        if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivoCaracteristica =
                        caracteristicaNombreComercial.getText();
        } else if (precaucionesPrincipioActivo.isSelected()) {
            precaucionesPrincipioActivoCaracteristica =
            caracteristicaNombreComercial.getText();
        } else if (interaccionesPrincipioActivo.isSelected()) {
            interaccionesPrincipioActivoCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
            embarazoYLactanciaPrincipioActivoCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (composicionNombreComercial.isSelected()) {
            composicionNombreComercialCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (presentacionNombreComercial.isSelected()) {
            presentacionNombreComercialCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (contraindicacionesNombreComercial.isSelected()) {
            contraindicacionesNombreComercialCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (dosificacionNombreComercial.isSelected()) {
            dosificacionNombreComercialCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (indicacionesNombreComercial.isSelected()) {
            indicacionesNombreComercialCaracteristica =
                    caracteristicaNombreComercial.getText();
        } else if (accionTerapeuticaNombreComercial.isSelected()) {
            accionTerapeuticaNombreComercialCaracteristica =
                    caracteristicaNombreComercial.getText();
        }
    }

    /**
     * Setea las variables en caso de que se trate de una modificación de 
     * medicamentos.
     *
     */
    private void exhibirDatosEnPantalla() {
        nombreComercial.setText(
                nombreComercialMedicamento.
                getNombreNombreComercialMedicamento());
        nombreComercial.setCaretPosition(0);
        principioActivo.setText(
                nombreComercialMedicamento.
                getPrincipioActivoMedicamento().
                getNombrePrincipioActivoMedicamento());
        principioActivo.setCaretPosition(0);
        grupoTerapeutico.setText(
                nombreComercialMedicamento.
                getGrupoTerapeuticoMedicamento().
                getNombreGrupoTerapeuticoMedicamento());
        grupoTerapeutico.setCaretPosition(0);
        laboratorio.setText(
                nombreComercialMedicamento.getLaboratorioMedicamento().
                getNombreLaboratorioMedicamento());
        laboratorio.setCaretPosition(0);
        composicionNombreComercialCaracteristica = 
                nombreComercialMedicamento.getComposicionMedicamento().
                getDescripcionComposicionMedicamento();
        presentacionNombreComercialCaracteristica =
                nombreComercialMedicamento.
                getPresentacionesNombreComercialMedicamento();
        contraindicacionesNombreComercialCaracteristica =
                nombreComercialMedicamento.
                getContraindicacionesMedicamento().
                getDescripcionContraindicacionesMedicamento();
        dosificacionNombreComercialCaracteristica =
                nombreComercialMedicamento.
                getDosificacionNombreComercialMedicamento();
        indicacionesNombreComercialCaracteristica =
                nombreComercialMedicamento.
                getIndicacionesNombreComercialMedicamento();
        accionTerapeuticaNombreComercialCaracteristica =
                nombreComercialMedicamento.
                getAccionTerapeuticaNombreComercialMedicamento();
        contraindicacionesPrincipioActivoCaracteristica =
                nombreComercialMedicamento.
                getPrincipioActivoMedicamento().
                getContraindicacionesPrincipioActivoMedicamento();
        precaucionesPrincipioActivoCaracteristica =
                nombreComercialMedicamento.
                getPrincipioActivoMedicamento().
                getPrecaucionesPrincipioActivoMedicamento();
        embarazoYLactanciaPrincipioActivoCaracteristica =
                nombreComercialMedicamento.
                getPrincipioActivoMedicamento().
                getEmbarazoPrincipioActivoMedicamento();
        interaccionesPrincipioActivoCaracteristica =
                nombreComercialMedicamento.
                getPrincipioActivoMedicamento().
                getInteraccionesPrincipioActivoMedicamento();
    }

    /**
     * Crea los objetos para crear un nuevo nombre comercial.
     */
    private void crearObjetos() {
            nombreComercialMedicamento =
                    new NombreComercialMedicamento();
            composicionNombreComercialCaracteristica = "";
            presentacionNombreComercialCaracteristica = "";
            contraindicacionesNombreComercialCaracteristica = "";
            dosificacionNombreComercialCaracteristica = "";
            indicacionesNombreComercialCaracteristica = "";
            accionTerapeuticaNombreComercialCaracteristica = "";
            contraindicacionesPrincipioActivoCaracteristica = "";
            precaucionesPrincipioActivoCaracteristica = "";
            embarazoYLactanciaPrincipioActivoCaracteristica = "";
            interaccionesPrincipioActivoCaracteristica = "";
    }

    /**
     * Verifica que el nombre comercial sea único
     * @return true si es único false en caso contrario
     */
    private boolean esNombreComercialUnico() {
        //En caso de modificación, se verifica si no se cambió el nombre
        if (nombreComercialMedicamento.
                getNombreNombreComercialMedicamento() != null &&
                nombreComercialMedicamento.
                getNombreNombreComercialMedicamento().equalsIgnoreCase(
                nombreComercial.getText())) {
            return true;
        } else if (nombreComercial.getText().isEmpty()){
            return true;
        } else {
            return (!NombreComercialMedicamentoLogica.
                    getExisteNombreComercialMedicamentoPorNombreComercialYPorEnBd(
                     nombreComercial.getText()));
        }
    }

    /**
     * Valida los campos ingresados
     *
     * @return true si los campos estan listos para cargarse, false en caso
     * contrario
     */
    private boolean validarCamposMedicamento() {
        boolean nombreComercialRetorno = true;
        boolean principioActivoRetorno = true;
        boolean grupoTerapeuticoRetorno = true;
        boolean laboratorioRetorno = true;

        //Manejo de la validación de nombre
        if (!CapaValidacion.validarCampoObligatorio(
                nombreComercial.getText())) {
            textoNombreComercial.setForeground(
                    Fuente.COLOR_ERROR);
            textoNombreComercial.setToolTipText(InformeError.
                    INFORME_ERROR_MEDICAMENTO_NOMBRE_COMERCIAL);
            nombreComercialRetorno = false;
        } else {
            textoNombreComercial.setForeground(
                    Fuente.COLOR_NORMAL);
            textoNombreComercial.setToolTipText(null);
            nombreComercialRetorno = true;
        }

        //Manejo de la validación del principio activo
        if (!CapaValidacion.validarCampoObligatorio(
                principioActivo.getText())) {
            principioActivoRetorno = false;
            textoPrincipioActivo.setForeground(
                    Fuente.COLOR_ERROR);
            textoPrincipioActivo.setToolTipText(InformeError.
                    INFORME_ERROR_MEDICAMENTO_PRINCIPIO_ACTIVO);
        } else {
            principioActivoRetorno = true;
            textoPrincipioActivo.setForeground(
                    Fuente.COLOR_NORMAL);
            textoPrincipioActivo.setToolTipText(null);
        }

        //Manejo de la validación del grupo terapeutico
        if (!CapaValidacion.validarCampoObligatorio(
                grupoTerapeutico.getText())) {
            textoGrupoTerapeutico.setForeground(
                    Fuente.COLOR_ERROR);
            textoGrupoTerapeutico.setToolTipText(InformeError.
                    INFORME_ERROR_MEDICAMENTO_GRUPO_TERAPEUTICO);
            grupoTerapeuticoRetorno = false;
        } else {
            textoGrupoTerapeutico.setForeground(
                    Fuente.COLOR_NORMAL);
            grupoTerapeuticoRetorno = true;
            textoGrupoTerapeutico.setToolTipText(null);
        }

        //Manejo de la validación del laboratorio
        if (!CapaValidacion.validarCampoObligatorio(
                laboratorio.getText())) {
            textoLaboratorio.setForeground(
                    Fuente.COLOR_ERROR);
            textoLaboratorio.setToolTipText(InformeError.
                    INFORME_ERROR_MEDICAMENTO_LABORATORIO);
            laboratorioRetorno = false;
        } else {
            textoLaboratorio.setForeground(
                    Fuente.COLOR_NORMAL);
            textoLaboratorio.setToolTipText(null);
            laboratorioRetorno = true;
        }

    return (principioActivoRetorno &&
            nombreComercialRetorno && grupoTerapeuticoRetorno &&
            laboratorioRetorno);
    }

    /**
     * Recopila los datos del medicamento a agregar/modificar.
     *
     */
    private void recopilarDatos() {
        datosMedicamento = new Object[14];

        datosMedicamento[CapaLogica.MEDICAMENTO_NOMBRE_COMERCIAL] =
                nombreComercial.getText();

        datosMedicamento[CapaLogica.MEDICAMENTO_PRINCIPIO_ACTIVO] =
                principioActivo.getText();

        datosMedicamento[CapaLogica.MEDICAMENTO_GRUPO_TERAPEUTICO] =
                grupoTerapeutico.getText();

        datosMedicamento[CapaLogica.MEDICAMENTO_LABORATORIO] =
                laboratorio.getText();

        datosMedicamento[CapaLogica.MEDICAMENTO_COMPOSICION_NOMBRE_COMERCIAL] =
                composicionNombreComercialCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_PRESENTACION_NOMBRE_COMERCIAL] =
                presentacionNombreComercialCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_CONTRAINDICACIONES_NOMBRE_COMERCIAL] =
                contraindicacionesNombreComercialCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_DOSIFICACION_NOMBRE_COMERCIAL] =
                dosificacionNombreComercialCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_INDICACIONES_NOMBRE_COMERCIAL] =
                indicacionesNombreComercialCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_ACCION_TERAPEUTICA_NOMBRE_COMERCIAL] =
                accionTerapeuticaNombreComercialCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_CONTRAINDICACIONES_PRINCIPIO_ACTIVO] =
                contraindicacionesPrincipioActivoCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_PRECAUCIONES_PRINCIPIO_ACTIVO] =
                precaucionesPrincipioActivoCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_EMBARAZO_Y_LACTANCIA_PRINCIPIO_ACTIVO] =
                embarazoYLactanciaPrincipioActivoCaracteristica;

        datosMedicamento[CapaLogica.MEDICAMENTO_INTERACCIONES_PRINCIPIO_ACTIVO] =
                interaccionesPrincipioActivoCaracteristica;
    }

    /**
     * Activa o desactiva la edición del panel característica.
     *
     * @param selected True si debe activarse False en caso contrario
     */
    private void activarEscrituraCaracteristica(boolean selected) {
        if (selected) {
            caracteristicaNombreComercial.setEditable(true);
        } else {
            caracteristicaNombreComercial.setEditable(false);
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoComposicionNombreComercial(String combo) {
        if (combo.equals("composicionNombreComercial")) {
            caracteristicaNombreComercial.setText(
                    composicionNombreComercialCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (!composicionNombreComercial.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoPresentacionNombreComercial(String combo) {
        if (combo.equals("presentacionNombreComercial")) {
            caracteristicaNombreComercial.setText(
                    presentacionNombreComercialCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (!presentacionNombreComercial.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoContraindicacionesNombre(String combo) {
        if (combo.equals("contraindicacionesNombreComercial")) {
            caracteristicaNombreComercial.setText(
                    contraindicacionesNombreComercialCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (!contraindicacionesNombreComercial.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoDosificacionNombreComercial(String combo) {
        if (combo.equals("dosificacionNombreComercial")) {
            caracteristicaNombreComercial.setText(
                    dosificacionNombreComercialCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (!dosificacionNombreComercial.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoIndicacionesNombreComercial(String combo) {
        if (combo.equals("indicacionesNombreComercial")) {
            caracteristicaNombreComercial.setText(
                    indicacionesNombreComercialCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (!indicacionesNombreComercial.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoAccionTerapeuticaNombreComercial(String combo) {
        if (combo.equals("accionTerapeuticaNombreComercial")) {
            caracteristicaNombreComercial.setText(
                    accionTerapeuticaNombreComercialCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (!accionTerapeuticaNombreComercial.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoContraindicacionesPrincipioActivo(String combo) {
        if (combo.equals("contraindicacionesPrincipioActivo")) {
            caracteristicaNombreComercial.setText(
                    contraindicacionesPrincipioActivoCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (!contraindicacionesPrincipioActivo.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoPrecaucionesPrincipioActivo(String combo) {
        if (combo.equals("precaucionesPrincipioActivo")) {
            caracteristicaNombreComercial.setText(
                    precaucionesPrincipioActivoCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (!precaucionesPrincipioActivo.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoEmbarazoYLactanciaPrincipioActivo(String combo) {
        if (combo.equals("embarazoYLactanciaPrincipioActivo")) {
            caracteristicaNombreComercial.setText(
                    embarazoYLactanciaPrincipioActivoCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (interaccionesPrincipioActivo.isSelected()) {
                interaccionesPrincipioActivo.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (!embarazoYLactanciaPrincipioActivo.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    /**
     * Setea el comportamiento del combobox seleccionado y el de los restantes
     * para lograr exclusión mútua
     * @param combo El combobox seleccionado
     */
    private void comportamientoInteraccionesPrincipioActivo(String combo) {
        if (combo.equals("interaccionesPrincipioActivo")) {
            caracteristicaNombreComercial.setText(
                    interaccionesPrincipioActivoCaracteristica);
            caracteristicaNombreComercial.setCaretPosition(0);

            if (contraindicacionesPrincipioActivo.isSelected()) {
                contraindicacionesPrincipioActivo.setSelected(false);
            } else if (precaucionesPrincipioActivo.isSelected()) {
                precaucionesPrincipioActivo.setSelected(false);
            } else if (embarazoYLactanciaPrincipioActivo.isSelected()) {
                embarazoYLactanciaPrincipioActivo.setSelected(false);
            } else if (accionTerapeuticaNombreComercial.isSelected()) {
                accionTerapeuticaNombreComercial.setSelected(false);
            } else if (composicionNombreComercial.isSelected()) {
                composicionNombreComercial.setSelected(false);
            } else if (presentacionNombreComercial.isSelected()) {
                presentacionNombreComercial.setSelected(false);
            } else if (contraindicacionesNombreComercial.isSelected()) {
                contraindicacionesNombreComercial.setSelected(false);
            } else if (dosificacionNombreComercial.isSelected()) {
                dosificacionNombreComercial.setSelected(false);
            } else if (indicacionesNombreComercial.isSelected()) {
                indicacionesNombreComercial.setSelected(false);
            } else if (!interaccionesPrincipioActivo.isSelected()){
                caracteristicaNombreComercial.setText("");
            }
        }
    }

    public static NombreComercialMedicamento getNombreComercialMedicamento() {
        return nombreComercialMedicamento;
    }


    public static void setNombreComercialMedicamento(
            NombreComercialMedicamento nombreComercialMedicamento) {
        if (cancelado) {
            nombreComercialMedicamento =
                nombreComercialMedicamento;
        }
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEnter = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    agregarOModificarMedicamento();
                }
            }
        };//Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    setNombreComercialMedicamento(null);
                    dispose();
                }
            }
        };

        //Setear eventos TextField
        nombreComercial.addKeyListener(keyListenerEnter);
        nombreComercial.addKeyListener(keyListenerEscape);
        principioActivo.addKeyListener(keyListenerEnter);
        principioActivo.addKeyListener(keyListenerEscape);
        grupoTerapeutico.addKeyListener(keyListenerEnter);
        grupoTerapeutico.addKeyListener(keyListenerEscape);
        laboratorio.addKeyListener(keyListenerEnter);
        laboratorio.addKeyListener(keyListenerEscape);

        caracteristicaNombreComercial.addKeyListener(keyListenerEscape);

        composicionNombreComercial.addKeyListener(keyListenerEscape);
        presentacionNombreComercial.addKeyListener(keyListenerEscape);
        contraindicacionesNombreComercial.addKeyListener(keyListenerEscape);
        dosificacionNombreComercial.addKeyListener(keyListenerEscape);
        indicacionesNombreComercial.addKeyListener(keyListenerEscape);
        accionTerapeuticaNombreComercial.addKeyListener(keyListenerEscape);
        contraindicacionesPrincipioActivo.addKeyListener(keyListenerEscape);
        precaucionesPrincipioActivo.addKeyListener(keyListenerEscape);
        embarazoYLactanciaPrincipioActivo.addKeyListener(keyListenerEscape);
        interaccionesPrincipioActivo.addKeyListener(keyListenerEscape);

        botonAceptar.addKeyListener(keyListenerEscape);
        botonCancelar.addKeyListener(keyListenerEscape);
    }
   
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox accionTerapeuticaNombreComercial;
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JEditorPane caracteristicaNombreComercial;
    private javax.swing.JCheckBox composicionNombreComercial;
    private javax.swing.JCheckBox contraindicacionesNombreComercial;
    private javax.swing.JCheckBox contraindicacionesPrincipioActivo;
    private javax.swing.JCheckBox dosificacionNombreComercial;
    private javax.swing.JCheckBox embarazoYLactanciaPrincipioActivo;
    private javax.swing.JTextField grupoTerapeutico;
    private javax.swing.JCheckBox indicacionesNombreComercial;
    private javax.swing.JCheckBox interaccionesPrincipioActivo;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTextField laboratorio;
    private javax.swing.JTextField nombreComercial;
    private javax.swing.JScrollPane panelCaracteristicaScrollPane;
    private javax.swing.JPanel panelCaracteristicasNombreComercial;
    private javax.swing.JPanel panelCaracteristicasPrincipioActivo;
    private javax.swing.JPanel panelSeleccionCaracteristicas;
    private javax.swing.JCheckBox precaucionesPrincipioActivo;
    private javax.swing.JCheckBox presentacionNombreComercial;
    private javax.swing.JTextField principioActivo;
    private javax.swing.JLabel textoDescriptivoVentana;
    private javax.swing.JLabel textoDescriptivoVentana1;
    private javax.swing.JLabel textoGrupoTerapeutico;
    private javax.swing.JLabel textoLaboratorio;
    private javax.swing.JLabel textoNombreComercial;
    private javax.swing.JLabel textoPrincipioActivo;
    // End of variables declaration//GEN-END:variables
    private static NombreComercialMedicamento nombreComercialMedicamento;
    public static boolean seMofifico;
    private String composicionNombreComercialCaracteristica;
    private String presentacionNombreComercialCaracteristica;
    private String contraindicacionesNombreComercialCaracteristica;
    private String dosificacionNombreComercialCaracteristica;
    private String indicacionesNombreComercialCaracteristica;
    private String accionTerapeuticaNombreComercialCaracteristica;
    private String contraindicacionesPrincipioActivoCaracteristica;
    private String precaucionesPrincipioActivoCaracteristica;
    private String embarazoYLactanciaPrincipioActivoCaracteristica;
    private String interaccionesPrincipioActivoCaracteristica;
    private Object[] datosMedicamento;
    private static boolean cancelado;
}
